It is a well-known fact that telecommunication networks utilizing resources shared between the users may experience congestion. Congestion may, for example, occur when the sum of traffic of an ingress node of the shared resource exceeds the sum of the traffic of an egress node of the same shared resource. A typical example is a router with a specific number of connections. Even if the router has processing power enough to re-route the traffic according to an estimated link throughput, a current link throughput might in fact restrict the amount of traffic that the outgoing links from the router can cope with. Hence, as a result, the buffer(s) of the router may build up and eventually overflow. The network then experiences congestion and the router may also be forced to drop data packets.
The normal behavior for any routing node is to provide a buffer(s) that can manage a certain amount of variation in input/output link capacity and hence absorb minor congestion occurrences. However, when the congestion is severe, the routing node will eventually begin to drop data packets.
Transmission Control Protocol (TCP) is a connection-oriented, congestion-controlled and reliable transport protocol. For TCP traffic, a dropped data packet will typically be detected by the sender since no acknowledgment (ACK) is received for that particular data packet and a re-transmission of the data packet will occur. Further, the TCP protocol has a built in rate adaptive mechanism which will lower the transmission bit-rate when data packet losses occur and re-transmissions occur on the Internet Protocol (IP) layer. Hence, TCP is generally speaking well suited to respond to network congestion.